/*******************************************************************************
 * Copyright (c) 2013 Davide Cabbia.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the GNU Public License v3.0
 * which accompanies this distribution, and is available at
 * http://www.gnu.org/licenses/gpl.html
 * 
 * Contributors:
 *     Davide Cabbia - initial API and implementation
 ******************************************************************************/
package ditta;

//# disabilitare invio se i mittente e destinatario coincidono

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.util.Vector;

import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;

public class DittaGui extends JFrame {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private JButton bInvio;
	private JButton bChiudi;
	private JTextArea taMonitor;
	private JScrollPane taScrollPane;
	private JLabel lMittente;
	private JLabel lDestinatario;
	private JLabel lCarichi;
	private JComboBox cbMittente;
	private JComboBox cbDestinatario;
	private JComboBox cbCarichi;
	private JPanel pChiusura;
	private JPanel pContenitore;
	private JPanel pMonitor;
	private JPanel pCommessa;

	/*
	 * 
	 */
    
	protected DittaGui(){
		//setup della finestra
		setSize(600,600);	
		setTitle("Ditta Arctic");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

		//creazione gui objects
		bInvio = new JButton("Invio");
        bChiudi = new JButton("Chiudi Base");

        pChiusura = new JPanel();
		pContenitore = new JPanel(new BorderLayout(10,10));
		pMonitor = new JPanel(new BorderLayout());
		pCommessa = new JPanel(new GridLayout(0,3,10,5));
		
		taMonitor = new JTextArea();
		taMonitor.setLineWrap(true);
		taScrollPane = new JScrollPane(taMonitor);
		taScrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
		
		cbMittente = new JComboBox(); // #da aggiungere automaticamente in base al costruttore
		cbDestinatario = new JComboBox();
		cbCarichi = new JComboBox();
		lMittente = new JLabel("Mittente:");
		lDestinatario = new JLabel("Destinatario:");
		lCarichi= new JLabel("Carichi:");

		cbCarichi.addItem("1");
		cbCarichi.addItem("2");
		cbCarichi.addItem("3");
		cbCarichi.addItem("4");
		cbCarichi.addItem("5");
		cbCarichi.setEditable(true);
		//layout
		add(pContenitore);
		
		pCommessa.add(lMittente);
		pCommessa.add(cbMittente);
		pCommessa.add(bInvio);
		pCommessa.add(lDestinatario);
		pCommessa.add(cbDestinatario);
		pCommessa.add(new JLabel(""));
		pCommessa.add(lCarichi);
		pCommessa.add(cbCarichi);
		
		pMonitor.add(taMonitor);
		
		pChiusura.add(bChiudi);
		
		pContenitore.add(pCommessa, BorderLayout.NORTH);
		pContenitore.add(pMonitor,BorderLayout.CENTER);
		pContenitore.add(pChiusura,BorderLayout.SOUTH);



		//shi#
		taMonitor.setEditable(false);
		cbMittente.setMaximumSize(new Dimension(100,50));
		cbDestinatario.setMaximumSize(new Dimension(100,50));
		//taMonitor.setText("");
		//this.pack();
		this.setVisible(true);
	}
	
	 public void ExitApp()
	   {
	      addWindowListener(new WindowAdapter()
	      {
	         public void windowClosing(WindowEvent e)
	         {
	           dispose();
	           System.exit(0); //calling the method is a must
	         }
	      });
	   }
	
	public void aggiungiBase(String base){
		cbMittente.addItem(base);

		cbDestinatario.addItem(base);
	}
	/*
	 * Offre la possibilita' di aggiungere una riga al Log dei trasporti effettuati con successo
	 */
	public void append(String str){
		taMonitor.append("> "+ str +'\n');
	}
	

	/*
	 * metodo della classe DittaGui. Si occupa di ritornare il riferimento al
	 * bottone per inviare una commessa
	 */
	public JButton getButtonInvio(){
		return bInvio;
	}
	public String getMittente(){
		return (String) cbMittente.getSelectedItem();
	}
	public String getDestinatario(){
		return (String) cbDestinatario.getSelectedItem();
	}
	public String getQuantita(){
		return (String) cbCarichi.getSelectedItem();
	}
	/*
	 * metodo della classe DittaGui. Si occupa di ritornare il riferimento al
	 * bottone per chiudere la ditta
	 */
	public JButton getButtonChiusura(){
		return bChiudi;
	}

	public void trasportoCompletato(String nomeAutotreno, String nomeBase) {
		append("L'autocarro " +nomeAutotreno+ " è arrivato a destinazione: " +nomeBase );
		
	}
	
	public void aggiornaEtichetteBasi(Vector<String> basi)
	{
		cbMittente.removeAllItems();
		cbDestinatario.removeAllItems();
		for(int i=0;i<basi.size();++i)
		{
			cbMittente.addItem(basi.elementAt(i));
			cbDestinatario.addItem(basi.elementAt(i));
		}
	}

}
